package com.iocup.keybastion.authentication;


import com.iocup.keybastion.core.profile.UserProfile;

/**
 * token构建者
 * @author xyjxust
 * @create 2022/3/4
 **/
public interface TokenBuilder {
    /**
     * 通过用户信息创建token
     * @param userProfile 用户信息
     * @return accessToken
     */
    AccessToken build(UserProfile userProfile);

    /**
     * 通过刷新token创建新的token
     * @param userProfile 用户信息
     * @return accessToken
     */
    AccessToken build(UserProfile userProfile, RefreshToken refreshToken);

    /**
     * 通过现有的token延长传入的token有效期,且不改变刷新token的有效期
     * @param accessToken 旧token
     * @param userProfile 用户信息
     * @return 延长了有效期的旧token
     */
    AccessToken build(AccessToken accessToken,UserProfile userProfile);



}
